/*
 * @lc app=leetcode.cn id=925 lang=cpp
 *
 * [925] 长按键入
 */

// @lc code=start
class Solution {
public:
    bool isLongPressedName(string name, string typed) {
        

        unordered_map<char,int> need,window;
        //need存储需要敲击的字符数
        for(char c : name)
            need[c]++;

        int left = 0;
        int right = 0;
        int vaild = 0;
        while(right < typed.size())
        {
            //窗口右边扩展
            char c = typed[right];

            //右移窗口
            right++;

            if(need.count(c))
            {
                //是需要敲击的字符
                window[c]++;
                if(need[c] == window[c])
                {
                    vaild++;
                }
            }

            //判断是否左移
            if(vaild == need.size())
            {
                return true;
            }

        }

        return false;
    }
};
// @lc code=end

